package com.ihakul.logger;

import android.util.Log;

import java.util.Date;
import java.util.logging.Formatter;
import java.util.logging.LogRecord;

/**
 * {@link LogRecord}被输出到文件系统之前，{@link java.util.logging.Logger Logger}使用该{@link FileOutputFormatter}将其格式化。
 * <BR/>考虑到 Proguard 的广泛应用，与 {@code com.android.internal.logging.AndroidHandler} 内置的 {@link Formatter} 一样，
 * {@code SourceClassName} 及 {@code SourceMethodName} 两项内容均不被 {@link FileOutputFormatter} 所支持。
 * @author Aaron
 * @version 2.1
 * Create at 2019/7/16
 */
public final class FileOutputFormatter extends Formatter {

    /**See {@link FileOutputFormatter}**/
    public FileOutputFormatter(String format) {
        this.format = format;
    }

    // format string for printing the log record
    private final String format;
    private final Date dat = new Date();

    @Override
    public String format(LogRecord lr) {
        dat.setTime(lr.getMillis());
        return String.format(java.util.Locale.getDefault(), format,
                dat,
                lr.getLoggerName(),
                lr.getLevel().getName(),
                lr.getMessage()
        );
    }
}
